package RRHH_Modelo;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import java.util.Date;

public class RHH_PLANILLA_AGUINALDO_CABECE {

    private int ID;
    private int ESTADO;
    private int ANO_PAGADO;
    private int NUMERO_DE_PAGO;
    private Date FECHA_PAGO;
    private String DESCRIPCION_PAGO;
    private Conexion con = null;

    public RHH_PLANILLA_AGUINALDO_CABECE(Conexion con) {
        this.con = con;
    }

    public RHH_PLANILLA_AGUINALDO_CABECE(int ID, int ESTADO, int ANO_PAGADO, Date FECHA_PAGO, String DESCRIPCION_PAGO, int NUMERO_DE_PAGO) {
        this.ID = ID;
        this.ESTADO = ESTADO;
        this.ANO_PAGADO = ANO_PAGADO;
        this.FECHA_PAGO = FECHA_PAGO;
        this.DESCRIPCION_PAGO = DESCRIPCION_PAGO;
        this.NUMERO_DE_PAGO = NUMERO_DE_PAGO;
    }

    public int Insertar() throws SQLException {
        String consulta = "insert into BROKER.RHH_PLANILLA_AGUINALDO_CABECE (ID, ESTADO, ANO_PAGADO, FECHA_PAGO, DESCRIPCION_PAGO,NUMERO_DE_PAGO) VALUES (" + ID + "," + ESTADO + "," + ANO_PAGADO + "," + getFECHA_PAGO_INSERT() + ",'" + DESCRIPCION_PAGO + "',"+NUMERO_DE_PAGO+")";
        con.EjecutarSentencia(consulta);
        consulta = "select BROKER.RHH_PLANILLA_AGUINALDO_CAB_SEQ.currval as ID from dual";
        ResultSet rs = con.EjecutarConsulta(consulta);
        rs.next();
        return rs.getInt("ID");
    }

    public boolean Modificar() throws SQLException {
        String consulta = "update BROKER.RHH_PLANILLA_AGUINALDO_CABECE set ID = " + ID + ",ESTADO = " + ESTADO + ",ANO_PAGADO = " + ANO_PAGADO + ",FECHA_PAGO = " + getFECHA_PAGO_INSERT() + ",DESCRIPCION_PAGO = '" + DESCRIPCION_PAGO + "', NUMERO_DE_PAGO="+NUMERO_DE_PAGO+" where ID =  " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }
    public boolean cerrar() throws SQLException {
        String consulta = "update BROKER.RHH_PLANILLA_AGUINALDO_CABECE set ESTADO = 0 where ID =  " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }

    public boolean EliminarXid() throws SQLException {
        String consulta = "delete from BROKER.RHH_PLANILLA_AGUINALDO_CABECE where ID= " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }

    public RHH_PLANILLA_AGUINALDO_CABECE Buscar(int id) throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_AGUINALDO_CABECE where ID = " + id;
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_AGUINALDO_CABECE> lista = Cargar(rs);
        if (lista.size() > 0) {
            return lista.get(0);
        } else {
            return null;
        }
    }
    public RHH_PLANILLA_AGUINALDO_CABECE Buscar_ano_numero(int ano, int numero) throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_AGUINALDO_CABECE where ANO_PAGADO = "+ano+" AND NUMERO_DE_PAGO = " + numero;
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_AGUINALDO_CABECE> lista = Cargar(rs);
        if (lista.size() > 0) {
            return lista.get(0);
        } else {
            return null;
        }
    }
    
    public List<RHH_PLANILLA_AGUINALDO_CABECE> Todas_pagadas_CONTABILIDAD() throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_AGUINALDO_CABECE where ESTADO=2";
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_AGUINALDO_CABECE> lista = Cargar(rs);
        return lista;
    }
    public List<RHH_PLANILLA_AGUINALDO_CABECE> Todas_pagadas_RRHH() throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_AGUINALDO_CABECE where ESTADO = 0";
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_AGUINALDO_CABECE> lista = Cargar(rs);
        return lista;
    }
    
    public List<RHH_PLANILLA_AGUINALDO_CABECE> BuscarXano(int ano) throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_AGUINALDO_CABECE where ANO_PAGADO = " + ano;
        ResultSet rs = con.EjecutarConsulta(consulta);
        return Cargar(rs);
    }
    
    public List<RHH_PLANILLA_AGUINALDO_CABECE> Buscar(String fecha, int numero) throws SQLException {
        String consulta = "SELECT RHH_PLANILLA_AGUINALDO_CABECE.*\n" +
                        "  FROM BROKER.RHH_PLANILLA_AGUINALDO_CABECE\n" +
                        " WHERE TO_CHAR(RHH_PLANILLA_AGUINALDO_CABECE.FECHA_PAGO,'MM/YYYY') = '"+fecha+"')\n" +
                        " AND  AND (RHH_PLANILLA_AGUINALDO_CABECE.NUMERO_DE_PAGO = "+numero+")"; 
        ResultSet rs = con.EjecutarConsulta(consulta);
        return Cargar(rs);
    }

    public List<RHH_PLANILLA_AGUINALDO_CABECE> Todos() throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_AGUINALDO_CABECE";
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_AGUINALDO_CABECE> lista = Cargar(rs);
        return lista;
    }

    public List<RHH_PLANILLA_AGUINALDO_CABECE> Cargar(ResultSet rs) throws SQLException {
        List<RHH_PLANILLA_AGUINALDO_CABECE> lista = new ArrayList<RHH_PLANILLA_AGUINALDO_CABECE>();
        while (rs.next()) {
            RHH_PLANILLA_AGUINALDO_CABECE objeto = new RHH_PLANILLA_AGUINALDO_CABECE(con);
            objeto.setID(rs.getInt("ID"));
            objeto.setESTADO(rs.getInt("ESTADO"));
            objeto.setANO_PAGADO(rs.getInt("ANO_PAGADO"));
            objeto.setFECHA_PAGO(rs.getDate("FECHA_PAGO"));
            objeto.setDESCRIPCION_PAGO(rs.getString("DESCRIPCION_PAGO"));
            objeto.setNUMERO_DE_PAGO(rs.getInt("NUMERO_DE_PAGO"));
            lista.add(objeto);
        }
        return lista;
    }

    public int getNUMERO_DE_PAGO() {
        return NUMERO_DE_PAGO;
    }

    public void setNUMERO_DE_PAGO(int NUMERO_DE_PAGO) {
        this.NUMERO_DE_PAGO = NUMERO_DE_PAGO;
    }   
    
    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public int getESTADO() {
        return ESTADO;
    }

    public void setESTADO(int ESTADO) {
        this.ESTADO = ESTADO;
    }

    public int getANO_PAGADO() {
        return ANO_PAGADO;
    }

    public void setANO_PAGADO(int ANO_PAGADO) {
        this.ANO_PAGADO = ANO_PAGADO;
    }

    public String getFECHA_PAGO() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        if (FECHA_PAGO != null) {
            return sdf.format(FECHA_PAGO);
        } else {
            return null;
        }
    }
    public Date getFECHA_PAGO_inDate() {        
        return FECHA_PAGO;        
    }

    public String getFECHA_PAGO_INSERT() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        if (FECHA_PAGO != null) {
            return "to_date('" + sdf.format(FECHA_PAGO) + "','dd/MM/yyyy')";
        } else {
            return "null";
        }
    }

    public void setFECHA_PAGO(Date FECHA_PAGO) {
        this.FECHA_PAGO = FECHA_PAGO;
    }

    public String getDESCRIPCION_PAGO() {
        return DESCRIPCION_PAGO;
    }

    public void setDESCRIPCION_PAGO(String DESCRIPCION_PAGO) {
        this.DESCRIPCION_PAGO = DESCRIPCION_PAGO;
    }

    public Conexion getCon() {
        return this.con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }
}
